package com.delete;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * @author: t-zhijiang.zhao
 * @date: 2024/4/24 下午2:53
 */
public class DeleteTest {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("deleted");
        list.add("deleted");
        list.add("ccc");

        //第一种
        // 报错：Exception in thread "main" java.util.ConcurrentModificationException
//        for (String str : list) {
//            if (str.equals("deleted")) {
//                list.remove(str);
//            }
//        }

        //第二种
//        for (int i = 0; i < list.size(); i++) {
//            if ("deleted".equals(list.get(i))) {
//                list.remove(i);
//                i--;
//                //解决方案：删除元素后，下标i需要减1，因为删除元素后，后面的元素的下标会发生变化
//            }
//        }

        //第三种
//        Iterator<String> iterator = list.iterator();
//        while (iterator.hasNext()) {
//            if ("deleted".equals(iterator.next())) {
//                iterator.remove();
//            }
//        }

        //第四种
        list.removeIf(s -> s.equals("deleted"));
        System.out.println("list = " + list);
    }
}
